{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Demo 6: Algorithms02"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "This demo will demonstrate the options for plotting projections and images on TIGRE. The functions have been in previous demos, but in here an exaustive explanation and usage of them is given.\n",
    "NOTE: if you havent already downloaded the tigre_demo_file and navigated to the correct directory, do so before continuing with this demo. \n",
    "--------------------------------------------------------------------------\n",
    "This file is part of the TIGRE Toolbox\n",
    "\n",
    "Copyright (c) 2015, University of Bath and\n",
    "                    CERN-European Organization for Nuclear Research\n",
    "                    All rights reserved.\n",
    "\n",
    "License:            Open Source under BSD.\n",
    "                    See the full license at\n",
    "                    https://github.com/CERN/TIGRE/license.txt\n",
    "\n",
    "Contact:            tigre.toolbox@gmail.com\n",
    "Codes:              https://github.com/CERN/TIGRE/\n",
    "--------------------------------------------------------------------------\n",
    "Coded by:          MATLAB (original code): Ander Biguri\n",
    "                   PYTHON : Reuben Lindroos,Sam Loescher"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Define Geometry"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from tigre.geometry import TIGREParameters\n",
    "geo=TIGREParameters(high_quality=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load data and generate projections"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from _Ax import Ax\n",
    "from Test_data import data_loader\n",
    "# define angles\n",
    "angles=np.linspace(0,2*np.pi,dtype=np.float32)\n",
    "# load head phantom data\n",
    "head=data_loader.load_head_phantom(number_of_voxels=geo.nVoxel)\n",
    "# generate projections\n",
    "projections=Ax(head,geo,angles,'interpolated')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## SART family of algorithms"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "There are 3 algorithms in this damily included in TIGRE: SART,SIRT and\n",
    "OS-SART.\n",
    "\n",
    " The main difference between them is the update process. \n",
    "   SART: Updates the image projection by projection\n",
    "   SIRT: Updates the image using the whole set of projections at once\n",
    "   OS-SART: middle ground. Updates the image using a subset of the\n",
    "            projections\n",
    "\n",
    "  Of these algorithms, SART is generally the one reaching a better image\n",
    "  (less L2 error) for the same amount of iterations, and SIRT is the\n",
    "  worst (still relatively similar). However, SART needs increased\n",
    "  computational time per iteration, as it needs to update the image very    often,\n",
    "  while SIRT only updates the emage ones for the whole sets of projections.\n",
    "  OS-SART lies in the middle, reaching similar convergence (L2 error per\n",
    "  iteration) than SART but with less computational time than SART.\n",
    "\n",
    " Usage, with optional parameters.\n",
    " In the three algorithms, there are 4 mandatory input arguments:\n",
    " Projections, geometry, angles and number of iterations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SIRT algorithm in progress.\n",
      "Esitmated time until completetion (s): 1.76545\n",
      "OS_SART algorithm in progress.\n",
      "Esitmated time until completetion (s): 14.4661\n",
      "SART algorithm in progress.\n",
      "Esitmated time until completetion (s): 41.368103\n"
     ]
    }
   ],
   "source": [
    "# Optional arguments for all of them\n",
    "#==========================================================================\n",
    "# 'lmbda': hyperparameter. The update will be multiplied by this number\n",
    "# every iteration, to make the steps bigger or smaller. Default: 1\n",
    "\n",
    "lmbda=1;\n",
    "\n",
    "\n",
    "#'lmbdared': reduction multiplier for the hyperparameter.\n",
    "# lmbda=lmbda*lmbdared every iterations, so the steps can be smaller\n",
    "# the further the update. Default=0.99\n",
    "lmbdared=0.999;\n",
    "\n",
    "# 'Init' : Initialization method. Possible options are\n",
    "#          'none' (default). There will be no initialization method, just\n",
    "#                 the algorithm\n",
    "  \n",
    "#          'FDK'  Initialize the image with the result of FDK algorithm\n",
    "\n",
    "#          'multigrid' Initialize using the multigrid method. The image\n",
    "#                      will be solved in a small scale, and the size of it\n",
    "#                      will increase until the desired size is reached.\n",
    "#\n",
    "#          'image'     Initialzies with a user given image. Not recoomended\n",
    "#                      unless you really know what you are doing.\n",
    "\n",
    "init=None;\n",
    "\n",
    "#'InitImg' : related to init. The image to use for initializing the\n",
    "# algorithm.\n",
    "\n",
    "# 'verbose': boolean to make the algorithm display (or not) running state. \n",
    "#            default true.\n",
    "\n",
    "verbose=True;\n",
    "# 'QualMeas'     Asks the algorithm for a set of quality measurement\n",
    "#                parameters. Input should contain a cell array of desired\n",
    "#                quality measurement names. Example: {'CC','RMSE','MSSIM'}\n",
    "#                These will be computed in each iteration. \n",
    "QualMeas='RMSE';\n",
    "# OS-SART\n",
    "# ========================================================================\n",
    "# Additionally OS-SART includes a couple of other parameters, related to\n",
    "# the subsets.\n",
    "#\n",
    "#   'blocksize':   Sets the projection block size used simultaneously. If\n",
    "#                  BlockSize = 1 OS-SART becomes SART and if  BlockSize = length(angles)\n",
    "#                  then OS-SART becomes SIRT. Default is 20.\n",
    "\n",
    "# EXAMPLES:\n",
    "# ----------------------------------------------------------------------\n",
    "from tigre.Algorithms.OS_SART import OS_SART\n",
    "from tigre.Algorithms.SIRT import SIRT\n",
    "from tigre.Algorithms.SART import SART\n",
    "from tigre.Utilities.plotImg import plotImg\n",
    "iterations=50\n",
    "sirt,sirt_l2err=SIRT(projections,geo,angles,iterations,computel2=True)\n",
    "ossart,ossarterr=OS_SART(projections,geo,angles,iterations,blocksize=20,computel2=True)\n",
    "sart,sarterr=SART(projections,geo,angles,iterations,computel2=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nOOJo9a69AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1c73d56810>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<tigre.Utilities.plotImg.plotImg instance at 0x7f1c9d8efc20>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from tigre.Utilities.plotImg import plotImg\n",
    "plotImg(np.hstack((sart,ossart,sirt)),slice=32,dim='z')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEKCAYAAAD5MJl4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlYVdX6wPHvElEQHHAuIHGeFQWn1BxLLbUs59Jmuzet\nbDC1LKcsm0wbtFvqz+E6pmnllKaSWqnhrDiRI6iIODLJ9P7+4HAuCgoisIHzfp7nPGeftfde+10o\n52XvtfbaRkRQSimlUitkdQBKKaXyHk0OSiml0tDkoJRSKg1NDkoppdLQ5KCUUioNTQ5KKaXS0OSg\nlFIqDU0OSiml0tDkoJRSKo3CVgeQVWXLlhUfHx+rw1BKqXxlx44dF0SkXEbb5dvk4OPjQ2BgoNVh\nKKVUvmKMOZmZ7fSyklJKqTQ0OSillEpDk4NSSqk08m2fgyq44uPjCQkJITY21upQHJKLiwteXl44\nOztbHYqykCYHleeEhIRQvHhxfHx8MMZYHY5DEREiIiIICQmhcuXKVoejLKSXlVSeExsbS5kyZTQx\nWMAYQ5kyZfSsTWlyUHmTJgbr6M9egSYHpZRS6XC45LBixQqaN2/OxYsXrQ5F5TMvvPACQUFB6a6b\nPHky0dHR6a5r27YtgYGBREdH88gjj1CrVi3q1q3LiBEjcjJcpe6KwyWH2NhYtm3bxunTp60OReUz\n06dPp06dOmnKExMTb5scUnvrrbc4dOgQu3bt4o8//mD16tVZiiUhIeG2n5W6Ww6XHLy8vAAIDQ21\nOBKVV0VFRfHII4/QsGFD6tWrx6JFi4D/nQEAuLu78+abb9KwYUMmTJjAmTNnaNeuHe3atbtlvcWK\nFbOvL1KkCI0bNyYkJCTd4z/33HM0bdqURo0a8dNPPwEwa9YsunfvTvv27enQoQMBAQG0bt2a7t27\np5u0lLobDjeU1dPTEyDdX0qVN7Vt2zZNWdeuXXnrrbeytD4gIOC2x1uzZg333nsvK1euBODKlStp\ntomKiqJZs2Z8/vnnAMycOZONGzdStmzZDFqT7PLly/zyyy+89tpradZNmDCB9u3bM3PmTC5fvkzT\npk3p2LEjADt37mTv3r2ULl2agIAAdu7cyf79+3XYqcp2DnfmULFiRQoVKqTJQd1S/fr1WbduHcOH\nD2fz5s2ULFkyzTZOTk488cQTWao/ISGBfv368eqrr1KlSpU069euXcvEiRPx9fWlbdu2xMbGcurU\nKQAefPBBSpcubd+2adOmmhhUjnC4MwdnZ2datGiBu7u71aGoTMroL/27XX+zGjVqsHPnTlatWsWo\nUaPo0KED77///g3buLi44OTkdEf1phg0aBDVq1dn6NCh6a4XEZYuXUrNmjVvKN+2bRtubm43lN38\nWans4nBnDgBbtmzh7bfftjoMlUedOXOGYsWK8dRTTzFs2DB27tyZ4T7Fixfn2rVrGW43atQorly5\nwuTJk2+5TadOnfjqq68QEQB27dqV+eCVyiYOmRyUup19+/bRtGlTfH19GTt2LKNGjcpwn0GDBtG5\nc+fbdkiHhIQwYcIEgoKCaNy4Mb6+vkyfPj3Ndu+99x7x8fE0aNCAunXr8t57791Ve5TKCpPy10l+\n4+/vL1l92M9XX33FnDlz+Pvvv7M5KpUdDh48SO3ata0Ow6Hpv0HBZYzZISL+GW3nkGcO0dHRBAYG\nEhkZaXUoSimVJzlkctB7HZRS6vYcMjnovQ5KKXV7Dpkc9MxBKaVuzyGTg6enJ/7+/hQrVszqUJRS\nKk9yuJvgAFxdXXWkklJK3YZDnjkolVfs3r2bVatWpbsuICCArl27AjBv3jwaNGhA/fr1uf/++9mz\nZ09uhqkckMMmh9dee43OnTtbHYZyYAkJCbdNDqlVrlyZ33//nX379vHee+8xaNCgLB83MTExTRxK\n3cxhk0NMTAy7d++2OgyVR02aNIl69epRr149+1QXt5rKe8SIEdSpU4cGDRrYZ4L95ZdfaNasGY0a\nNaJjx46EhYUBMGbMGAYMGEDLli0ZMGAA77//PosWLcLX19deX3ruv/9+PDw8AGjevPktR9qtXbuW\nFi1a0LhxY3r16mW/l8fHx4fhw4fTuHFjfvjhB9q2bcvQoUPx9/dnypQp2fNDUwWKQ/Y5QPKIpbCw\nMOLi4ihSpIjV4ajbSJly+z//+Q81a9bks88+Y8WKFfZpuQ8fPsxLL70E/G+SvUGDBnHkyBHefPNN\nunXrxi+//MLnn39OjRo1+O677257vB07dvB///d/bNu2DRGhWbNmtGnThmPHjqWZyjsiIoJly5Zx\n6NAhjDFcvnwZgFatWrF161aMMUyfPp1PPvnEPr13UFAQW7ZswdXVlVmzZhEYGMjXX3+d6Z/HjBkz\n6NKlS5ryCxcu8MEHH/Dbb7/h5ubGxx9/zKRJk+yTBpYpU8Y+T9S3335LXFwcWZ1lQBV8DpscUu51\nOHPmDD4+PtYGo/KULVu20KNHD/uMp48//jibN2+mc+fOvPnmmwwfPpyuXbvSunVrEhIScHFx4fnn\nn6dr1672PoKQkBD69OnD2bNniYuLu2Fa7e7du+Pq6pql2DZu3MiMGTPYsmVLmnVbt24lKCiIli1b\nAhAXF0eLFi3s6/v06XPD9jd/Vio1h00Oqe910OSQt9085fZbb71lv3wDULNmzTTb3Hx20K1bN7p1\n63ZXcdxqKu/t27ezfv16lixZwtdff82GDRt45ZVXeOONN+jevTsBAQGMGTPGXk9Wp9neu3cvL7zw\nAqtXr6ZMmTJp1osIDz74IAsWLEh3f53uW90Jh+1zqFKlCh07dsTZ2dnqUFQe07p1a5YvX050dDRR\nUVEsW7aM1q1bpzuVd2RkJFeuXOHhhx/miy++sI8iunLliv3sdPbs2bc8Vman+j516hSPP/44c+fO\npUaNGulu07x5c/744w+Cg4OB5D6SI0eO3GnzlQIc+MyhevXqrFu3zuowVB7UuHFjnnnmGZo2bQrA\nCy+8QKNGjfj1118ZNmwYhQoVwtnZmWnTpnHt2jUeffRRYmNjEREmTZoEJHc89+rVCw8PD9q3b8/x\n48fTPVa7du3sT30bOXLkLS/1jBs3joiICF5++WUAChcunKa/oFy5csyaNYt+/fpx/fp1AD744INb\nJhOlbschp+xWeZtOF209/TcouHTK7kzo1KkTTz/9tNVhKKVUnuPQySEhIcF+fVYppdT/OHRy8PT0\n1Gm7lVIqHQ6dHLy8vDhz5gxJSUlWh6KUUnlKhsnBGONtjNlojAkyxhwwxrxmKy9tjFlnjDlqe/dI\ntc9IY0ywMeawMaZTqnI/Y8w+27ovjTHGVl7UGLPIVr7NGOOT/U1Ny8vLi4SEBM6fP58bh1NKqXwj\nM2cOCcCbIlIHaA4MNsbUAUYA60WkOrDe9hnbur5AXaAzMNUY42SraxrwIlDd9kqZ+e554JKIVAO+\nAD7OhrZlqH79+vTs2ZP4+PjcOJxSSuUbGSYHETkrIjtty9eAg4An8CiQcnfPbOAx2/KjwEIRuS4i\nx4FgoKkx5h6ghIhsleTxs3Nu2ielriVAh5SzipzUunVrfvjhB7y9vXP6UMqBLF++nKCgoHTXjRkz\nhs8++wyAYcOGUatWLRo0aECPHj3s8zIplRfcUZ+D7XJPI2AbUEFEztpWnQMq2JY9gdOpdguxlXna\nlm8uv2EfEUkArgBp5wfIIfn1Xg+V9yQkJNw2OaT24IMPsn//fvbu3UuNGjX46KOPsnRMEUnTb3bz\ntNxK3alMJwdjjDuwFBgqIldTr7OdCeT4N6wxZpAxJtAYExgeHn7X9YkInp6evPvuu9kQnSoobjU1\n97hx42jSpAn16tVj0KBB9j8qUk9//fHHH/Pzzz8zbNgwfH19+eeff255nIceeojChZMnKbjdNNyf\nfvopTZo0oUGDBowePRqAEydOULNmTQYOHEi9evU4ffo07u7uvPnmmzRs2JC//vorO38kygFlavoM\nY4wzyYlhnoj8aCsOM8bcIyJnbZeMUnp1Q4HU12m8bGWhtuWby1PvE2KMKQyUBCJujkNEvgO+g+Q7\npDMTewbtwtnZmdOnT2e8sbLE0KFDs/25G76+vvZnNKRnzZo1aabmBhgyZIh9+usBAwawYsUK+2R+\nqae/Pnr0KF27dqVnz56ZjmnmzJnpTp2xdu1ajh49yvbt2xERunfvzqZNm7jvvvs4evQos2fPpnnz\n5kByUmvWrJl9anCl7kZmRisZYAZwUEQmpVr1M5Bye/HTwE+pyvvaRiBVJrnjebvtEtRVY0xzW50D\nb9onpa6ewAbJpWs9Xl5ehIaGZryhchj169dn3bp1DB8+nM2bN1OyZEkgebrsZs2aUb9+fTZs2MCB\nAwfs+9zN9NcTJkygcOHCPPnkk2nWrV27lrVr19KoUSMaN27MoUOHOHr0KACVKlWyJwYAJycnnnji\niSzHoVRqmTlzaAkMAPYZY1L+hHsHmAgsNsY8D5wEegOIyAFjzGIgiOSRToNFJOUC6MvALMAVWG17\nQXLymWuMCQYukjzaKVd4enrqE+HysNv9hZ9T0pua++233+bll18mMDAQb29vxowZQ2xsrH2frE5/\nPWvWLFasWMH69etJbwyGiDBy5Ej7w4xSnDhxIs0xXVxccHJyQqnskGFyEJEtwK1GDnW4xT4TgAnp\nlAcC9dIpjwV6ZRRLTvDy8mLFihWISLq/nMrxnDlzhtKlS/PUU09RqlQppk+fbk8EZcuWJTIykiVL\nltzyslFmp+Fes2YNn3zyCb///jvFihVLd5tOnTrx3nvv8eSTT+Lu7k5oaKhOM69yhcNO2Z2iVatW\nXL16lfj4eH1cqAJg3759aabmLlWqFC+++CL16tWjYsWKNGnS5Jb79+3blxdffJEvv/ySJUuWULVq\n1XS3GzJkCNevX+fBBx8Ekjulv/322xu2eeihhzh48KD9iW7u7u7897//1TMEleN0ym6V5+h00dbT\nf4OCS6fsvgNJSUl6l7RSSqXi8MkhNDQUFxcX5syZY3UoSimVZzh8cihXrhwJCQk6dXcek18vdxYE\n+rNXoMmBIkWKUL58eU0OeYiLiwsRERH6JWUBESEiIgIXFxerQ1EWc/jRSqA3wuU1Xl5ehISEkB1T\npKg75+LigpeXV8YbqgJNkwPJN8IdP37c6jCUjbOzM5UrV7Y6DKUcmiYH4LHHHuPkyZNWh6GUUnmG\nJgfg2WeftToEpZTKUxy+QzpFVFQUcXFxVoehlFJ5giYHICAgAHd3d/744w+rQ1FKqTxBkwNw7733\nAuiIJaWUstHkQPJoJUDvdVBKKRtNDiTPxV+qVClNDkopZaPJwUZvhFNKqf/Roaw2gwYNwt3d3eow\nlFIqT9DkYPPKK69YHYJSSuUZelnJJjExkdDQUBITEzPeWCmlCjhNDjYzZ87UfgellLLR5GCjw1mV\nUup/NDnYpDwvd9++fRZHopRS1tPkYOPj44OHhwc7duywOhSllLKcJgcbYwx+fn4EBgZaHYpSSllO\nh7KmMmTIEK5evWp1GEopZTlNDqk8+uijVoeglFJ5gl5WSkVE2LdvH0eOHLE6FKWUspQmh5u0adOG\nzz//3OowlFLKUpocUjHG0LhxYx2xpJRyeJocbuLn58e+ffv0kaFKKYemyeEmfn5+xMXFsX//fqtD\nUUopy2hyuImfnx+AXlpSSjk0Hcp6kypVqrBo0SJat25tdShKKWUZTQ43McbQu3dvq8NQSilLZXhZ\nyRgz0xhz3hizP1XZGGNMqDFmt+31cKp1I40xwcaYw8aYTqnK/Ywx+2zrvjTGGFt5UWPMIlv5NmOM\nT/Y28c6dOHGCqVOnEh8fb3UoSillicz0OcwCOqdT/oWI+NpeqwCMMXWAvkBd2z5TjTFOtu2nAS8C\n1W2vlDqfBy6JSDXgC+DjLLYl22zdupXBgwdz4MABq0NRSilLZJgcRGQTcDGT9T0KLBSR6yJyHAgG\nmhpj7gFKiMhWERFgDvBYqn1m25aXAB1Sziqsop3SSilHdzejlV4xxuy1XXbysJV5AqdTbRNiK/O0\nLd9cfsM+IpIAXAHK3EVcd61q1aqUKFFCk4NSymFlNTlMA6oAvsBZIFfmmzDGDDLGBBpjAsPDw3Ps\nOIUKFdI7pZVSDi1LyUFEwkQkUUSSgO+BprZVoYB3qk29bGWhtuWby2/YxxhTGCgJRNziuN+JiL+I\n+JcrVy4roWean58fe/bs0U5ppZRDylJysPUhpOgBpIxk+hnoaxuBVJnkjuftInIWuGqMaW7rTxgI\n/JRqn6dtyz2BDbZ+CUu98cYbHDt2DGdnZ6tDUUqpXJfhfQ7GmAVAW6CsMSYEGA20Ncb4AgKcAF4C\nEJEDxpjFQBCQAAwWkURbVS+TPPLJFVhtewHMAOYaY4JJ7vjumx0Nu1v33nuv1SEopZRlTB74Iz1L\n/P39Jacf6Tl16lRcXV159tlnc/Q4SimVW4wxO0TEP6PtdG6l21i0aBH/+c9/rA5DKaVynSaH20jp\nlE5ISLA6FKWUylWaHG7Dz8+P2NhYgoKCrA5FKaVylSaH29A7pZVSjkqTw23UqFGD4sWLc/z4catD\nUUqpXKVTdt9GoUKFOHv2LG5ublaHopRSuUrPHDKgiUEp5Yg0OWRg3759dOvWjUOHDlkdilJK5RpN\nDhkoXLgwK1asYOvWrVaHopRSuUaTQwZq1KhB+fLlWb16dcYbK6VUAeFwyWHNmjXUq1ePM2fOZGp7\nJycnevbsyYoVK4iKisrh6JRSKm9wuORQtGhRDhw4cEePAO3duzfR0dGsWLEiByNTSqm8w+GSg6+v\nL9OmTaN27dqZ3qdVq1a0adMmB6NSSqm8RWdlVUopB6Kzst7G2rVr+eabb+54v+vXr2e6r0IppfIz\nh0wOy5cvZ9SoUdzpWVPTpk156aWXcigqpZTKOxwyObRs2ZJWrVoRHR19R/t17NiRX3/9lUuXLuVQ\nZEoplTc4ZHJ48skn+eWXX+54aow+ffoQHx/P8uXLcygypZTKGxwyOQBERETccf9BkyZNqFy5MosW\nLcqhqJRSKm9w2ORQs2ZNxowZc0f7GGPo3bs3v/32GxcuXMiZwJRSKg9w2Cm769atm6XJ9AYNGkS7\ndu0oWbJkDkSllFJ5g8Mmhx9++AEPD4873q9KlSpUqVIlByJSSqm8w2EvK5UvXx5nZ+cs7Xv69GlG\njBhBWFhYNkellFJ5g8Mmh8OHD9O8eXN+//33O9736tWrfPzxxyxdujQHIlNKKes5bHIoVaoU27Zt\nY9euXXe8b926dalTp46OWlJKFVgOmxzKly/P5MmTad++fZb279OnD5s3b9bpNJRSBZLDJgdjDK+9\n9hoNGjTI0v59+vRBRPjhhx+yOTKllLKewyYHgF27djFx4sQ7nmMJku+TaNKkCefPn8+ByJRSyloO\nO5QV4M8//2TkyJEMHDiQe++9947337RpEy4uLjkQmVJKWcuhzxwaNWpE27ZtuXr1apb2T0kM+/bt\nIz4+PjtDU0opSzl0crj//vvZuHEjtWrVynIdgYGBNGjQgDlz5mRjZEopZS2HTg4AMTExnD59Osv7\n+/n50aRJE8aPH09cXFw2RqaUUtZx+OTQpUsX+vbtm+X9jTGMGzeOkydPMmPGjGyMTCmlrOPwyaFO\nnTocPHgwSyOWUnTq1In777+fCRMmEBsbm43RKaWUNTJMDsaYmcaY88aY/anKShtj1hljjtrePVKt\nG2mMCTbGHDbGdEpV7meM2Wdb96UxxtjKixpjFtnKtxljfLK3ibc3duxYTp48iS2cLDHGMH78eM6f\nP89ff/2VjdEppZQ1MnPmMAvofFPZCGC9iFQH1ts+Y4ypA/QF6tr2mWqMcbLtMw14Eahue6XU+Txw\nSUSqAV8AH2e1MVlRrlw5ihcvftf1tG/fnpMnT9KuXbtsiEoppayVYXIQkU3AxZuKHwVm25ZnA4+l\nKl8oItdF5DgQDDQ1xtwDlBCRrZJ8/WbOTfuk1LUE6GDu5s/4OxQdHU3Hjh2ZOXPmXdd1zz33AOhs\nrUqpfC+rfQ4VROSsbfkcUMG27AmkHvoTYivztC3fXH7DPiKSAFwBymQxrjvm6urK7t27s+1y0Hvv\nvUe9evW4du1attSnlFJWuOsOaduZQNZ7c++AMWaQMSbQGBMYHh6eXXXyySef0K9fv2ypr1u3bly4\ncIGvvvoqW+pTSikrZDU5hNkuFWF7T5lgKBTwTrWdl60s1LZ8c/kN+xhjCgMlgYj0Dioi34mIv4j4\nlytXLouhp/Xcc89leXbWmzVt2pRu3boxceJETp06lS11KqVUbstqcvgZeNq2/DTwU6ryvrYRSJVJ\n7njebrsEddUY09zWnzDwpn1S6uoJbJC7GVeaBadOnWLy5MlcuHAhW+qbMmUKIsKzzz5LUlJSttSp\nlFK5KTNDWRcAfwE1jTEhxpjngYnAg8aYo0BH22dE5ACwGAgC1gCDRSTRVtXLwHSSO6n/AVbbymcA\nZYwxwcAb2EY+5aZjx47x+uuvZ+nBP+mpXLkyX3zxBYGBgRw+fDhb6lRKqdxkcvmP9Gzj7+8vgYGB\n2VLX+fPnefjhh5kwYQKdOnXKeIdMEBHCwsKoWLFittSnlFLZwRizQ0T8M9rO4e+QhuSnwgUGBmZb\nYoDkju6KFSsiIixatIiEhIRsq1sppXKaJgebxMREQkJCMt7wDgUEBNC3b18mTpyY7XUrpVRO0eRg\nM3ToUOrVq3dXcyylp127dvTt25exY8dmW5+GUkrlNE0ONrVq1eLKlSucOXMm2+v+5ptvKFeuHAMG\nDNCJ+ZRS+YImB5v+/ftz7ty5LD0uNCOlS5dmxowZHDhwgPfffz/b61dKqezm0M+QTs3DI3li2Zwa\nvdWlSxeGDx+Ov3+GgwSUUspyeuaQyrx586hUqRJRUVE5Uv/EiRPp2bMnkPwEOqWUyqs0OaTi5eXF\n6dOnWbFiRY4eZ86cOdSuXTtH+jeUUio7aHJIpVWrVsyePZuHHnooR4/TsGFDIiIi6N69e46dpSil\n1N3Q5JCKk5MTAwcOtPc/5JSGDRuycOFCdu3axYABA3T+JaVUnqPJ4SbXrl1j4MCBLFy4MEeP88gj\njzBp0iSWLVvGyJEjc/RYSil1p3S00k3c3d3ZvHkz58+fp2/fvjl6rFdffZXDhw8jIojIXT3HWiml\nspMmh5sYYxg/fjxFihTJlWN988039qQQGxuLi4tLjh9XKaUyopeV0vHUU0/Ru3fvXDlWSmI4dOgQ\nNWrUYOXKlblyXKWUuh1NDrfw22+/MXr06Fw7XoUKFahQoQI9evTgl19+ybXjKqVUejQ53MIff/zB\n+PHjc+1eBA8PD9atW4evry9PPPEEP/30U8Y7KaVUDtHkcAv9+vWjd+/eREdH59oxS5Uqxbp162jc\nuDE9e/bkt99+y7VjK6VUatohfQs1atTI8eGs6SlZsiRr165lxIgRNGnSJNePr5RSoGcOtxUVFcXc\nuXM5ffp0rh63RIkSTJ06lZIlSxIdHc2aNWty9fhKKaXJ4TbCw8MZOHAg8+fPtyyGDz74gC5dujBu\n3LgcmzFWKaVuppeVbsPHx4dOnToRFxdnWQyjR48mNDSU0aNHc/ToUaZPn07RokUti0cp5Rg0OWRg\n9erVlt65XLRoUWbNmkWNGjUYNWoUJ06cYNmyZZQtW9aymJRSBZ9eVsqAMYbLly/z66+/WhrDu+++\ny6JFizhy5AhhYWGWxaKUcgyaHDJh+PDhPPbYY5Y/f6F3794cO3aMunXrIiIEBQVZGo9SquDS5JAJ\nw4cPx8PDg4MHD1odCm5ubgDMnj2bevXqMXr0aBISEiyOSilV0GifQyZUqVKFkydP4uzsbHUodj17\n9iQgIIBx48YREBDA/Pnz8fT0tDospVQBoWcOmeTs7ExISAhz5861OhQgeWrxWbNmMWfOHHbs2EHD\nhg1ZvXq11WEppQoITQ53YPLkyTzzzDMcPnzY6lDsBgwYwI4dO/D29ubKlStWh6OUKiA0OdyBt99+\nm7p163Lu3DmrQ7lBzZo1+fvvv+0PJ5o/fz579+61OCqlVH6myeEOlC9fnj179tCmTRurQ0mjcOHk\n7qO4uDjeeecd/Pz8GDVqFLGxsRZHppTKjzQ53CFjDEFBQXzyySdWh5KuIkWKsGPHDvr378+ECRNo\n1KgRW7ZssTospVQ+o8khC5YtW8bw4cPZvn271aGkq0yZMsyePZs1a9YQExPDAw88kCeG4Sql8g9N\nDlnw6quv8tBDD5GUlGR1KLfVqVMn9u/fz9y5c6lduzYAgYGBeT5upZT1TH6d6dPf318CAwOtDiNf\nOXr0KLVr18bPz49JkybRsmVLq0NSSuUyY8wOEfHPaLu7OnMwxpwwxuwzxuw2xgTaykobY9YZY47a\n3j1SbT/SGBNsjDlsjOmUqtzPVk+wMeZLY+VMd3dg//799OrVi5iYGKtDyZSqVasyY8YMQkJCaNWq\nFX369OH48eNWh6WUyoOy47JSOxHxTZWJRgDrRaQ6sN72GWNMHaAvUBfoDEw1xjjZ9pkGvAhUt706\nZ0NcOS4kJIQlS5YwbNgwq0PJlEKFCvH0009z5MgRxowZw4oVK6hXrx4XLlywOjSlVB6TE30OjwKz\nbcuzgcdSlS8UkesichwIBpoaY+4BSojIVkm+xjUn1T55WufOnfn66695+eWXrQ7ljri5uTF69GiO\nHDnC1KlT7dN/z507l4iICIujU0rlBXebHAT4zRizwxgzyFZWQUTO2pbPARVsy55A6udthtjKPG3L\nN5fnC4MHD6ZOnTpERkZy6tQpq8O5I56enjz99NMAnDhxgmeeeQYfHx9GjBhBeHi4xdEppax0t8mh\nlYj4Al2AwcaYB1KvtJ0JZFuPtzFmkDEm0BgTmJe+vESEhx9+mO7du+eb/oeb+fj4sHfvXrp27con\nn3yCj48Pw4YN4+LFi1aHppSywF0lBxEJtb2fB5YBTYEw26UibO/nbZuHAt6pdveylYXalm8uT+94\n34mIv4j4lytX7m5Cz1bGGEaOHElwcDC7du2yOpwsq1u3LgsWLCAoKIjHH3+cr7/+2v6I1MjISIuj\nU0rlpiw/uotQAAAa80lEQVQnB2OMmzGmeMoy8BCwH/gZeNq22dPAT7bln4G+xpiixpjKJHc8b7dd\ngrpqjGluG6U0MNU++UaXLl04ceIE999/v9Wh3LVatWoxd+5cTp8+TcWKFQHo1q0b999/P4sXLyY+\nPt7iCJVSOe1uzhwqAFuMMXuA7cBKEVkDTAQeNMYcBTraPiMiB4DFQBCwBhgsIom2ul4GppPcSf0P\nkC/nni5btiyRkZG89NJLHD161Opw7lpKR7WI8Nhjj3H+/Hn69OlDlSpVmDBhAiEhIRnUoJTKr/Qm\nuGx2+vRpfH198fLyIjAwME89IOhuJSYmsmrVKqZMmcL69euZMGEC77zzDvHx8SQlJVG0aFGrQ1RK\nZSBXboJTaXl7e/PDDz8wZMiQApUYAJycnOjWrRu//fYbwcHBDBqUPEBt2bJl3Hvvvbz66qvs3LmT\n/PoHh1LqfzQ55ID27dvz4osvAvD5558THBxscUTZr2rVqvbLTlWqVOGhhx7iu+++w8/Pj5o1azJq\n1Ciio6MtjlIplVV6WSkHhYWFUbduXZydnQkMDCzwz3i+ePEiS5cuZfHixRw5coTjx49TqFAhVq1a\nxX333UfdunXJJzOjKFVgZfaykiaHHBYUFMTs2bP56KOPKFTIcU7UYmNjcXFxQUS47777CAkJoUqV\nKnTt2pVu3brxwAMPUKRIEavDVMrhaHLIg5YvX07p0qV54IEHMt64ADl37hzLly9nxYoVrF+/ntjY\nWAYOHMjs2bMREcLCwuxDZpVSOUuTQx6TmJiIv78/Bw8eZNWqVbRv397qkCwRHR3N+vXrKV++PM2a\nNePo0aPUqFGDOnXq0LFjRzp27EibNm0oUaKE1aEqVSDpaKU8xsnJiXXr1vHss8/SrFkzAIfssC1W\nrBjdunWz/wxKlCjBp59+ire3N99//z3du3endOnS/PRT8n2Q165d4/Lly1aGrJRD0uSQi8qWLcu0\nadNwc3Pj0KFDVKpUiW+//dahh35WqFCBt956izVr1nDp0iU2btzIyJEjady4MQALFiygdOnS+Pr6\nMmTIEBYuXMjp06cd+memVG7Qy0oWCQkJ4bnnniM0NJSdO3fqDWS3cODAAZYuXcqWLVv4888/iYqK\nAuDUqVN4e3uzfft2rly5QpMmTShVqpTF0SqV92X2slLh3AhGpeXl5cWvv/7K+fPnKVq0KFu3biUg\nIIDBgwdTvHhxq8PLM+rWrUvdunUBSEhIYPfu3ezcuRMvr+S5GidPnsyCBQsAqFGjBo0aNaJRo0a8\n/fbbOmxWqbugZw55xPvvv8/48eN54oknWLJkidXh5BuXL18mMDCQ7du3ExgYyK5duzDGcOzYMQBe\nfPFFzpw5Q/369alXrx716tWjVq1auLi4WBy5UtbQ0Ur50Pbt23FxcaFBgwasWbOGPXv2MHjwYNzd\n3a0OLV+JiYnB1dUVgGHDhvHrr79y6NAh+2yyvr6+9qnVv//+e9zc3KhVqxY1atTQn7Uq8DQ55HOv\nv/46kydP5oUXXuD7779HRPQyyV2Ij48nODiY/fv3Y4yhZ8+eAFSsWJGwsDD7dt7e3vTp04dPP/0U\ngICAAO699158fHz0pj1VIGifQz73xRdf0KdPH1IeavTNN9+wdOlSXn31VXr06GFxdPmPs7MztWvX\npnbt2jeUnzx5kn/++YdDhw7ZXylzRiUlJdG5c2euX79OoUKF8PHxoWrVqvTs2dM+6eDu3bupVKkS\nHh4eud4mpXKSJoc8rHnz5vZld3d3Tp06xZYtW+jRowfnz58nODiYZs2a4eTkZGGU+VvRokWpU6cO\nderUSbNORNiwYQPBwcEcPXqU4OBggoOD7WcaUVFRNGrUCICSJUtSqVIlKlWqRL9+/ejXrx9JSUkE\nBgbi7e1NhQoVHGr6FJX/aXLIJ5555hkGDhxof0b19OnTeffdd2nVqhWbN29GRIiJiaFYsWIWR1pw\nODk5cf/999/y6X5OTk78+OOPHDt2jOPHj3Pq1ClOnjzJ2bNngeRpQ1Ju9itcuDCenp54e3vz73//\nm/79+xMTE8PKlSvx9PTE09OTihUr6qUrlWdocshHChUqhJubGwCDBw+mSpUq9pvBgoKC8Pf3p2PH\njixevNjeIatyjouLy20v8ZUsWZKff/6Z06dP218hISEkJiY/APH48eP06tXrhn3Kly/Phx9+yPPP\nP094eDiTJ0/mnnvu4Z577qFixYpUrFgRT09PHW2lcpwmh3yqZMmS9O3b1/7Z1dWVQYMGcfToUVxd\nXRERmjVrRrVq1Rg9ejQ1a9a0MFrH5ObmRrdu3W65vmrVquzevZvQ0FDOnDlDaGgooaGhVK5cGUju\nD/n444/tySTFtGnT+Ne//sXBgwd57rnnqFChAuXLl7e/OnXqRM2aNYmNjeXSpUuULVu2wD14SuU8\nTQ4FRJUqVZgyZYr9c0xMDNWqVSMgIIAJEyYAMHLkSA4ePMjzzz9/2y8tlTuKFi1Kw4YNadiwYbrr\n/f39uX79OhEREZw9e5azZ88SFhZGixYtgOSbAt3d3fnnn3/YunUr4eHhJCUlMW/ePGrWrMm2bdto\n27YtAKVKlaJs2bKUK1eO8ePH06FDB06cOMHChQspU6YMZcuWpUyZMpQpUwYfHx/7GapyXJocCqhi\nxYoxf/78NHMQHTx4kJMnTwKwdOlSRo4cSZcuXeyJJSwsjPLly+uw2TzCycnJfkZwcxKpX78+69at\ns39OSkri4sWL9kuKVatWZerUqYSHh3PhwgUuXLhAeHi4vV9j//79jBw5Ms0xly5dyuOPP86GDRt4\n5plnKF26NB4eHnh4eFC6dGleeeUVGjZsSEhICFu2bMHDw4NSpUrZ30uXLk3hwvrVkt/pv2ABl/pL\n/qOPPuKjjz6yJwwPDw/q1q1rn/X06tWrVKxYkTJlyvDXX39RvXp1Nm3aRGJiIg0aNKBMmTKWtEFl\nTqFChezDcCF5ipZ///vft9y+a9euREVFERERwYULF4iIiCAiIsLeie7h4UGHDh24ePEiFy9e5MiR\nI1y6dIn+/fsDsHXrVvr165em3lWrVtGlSxd+/fVXhg4dSsmSJSlVqhQlS5akZMmSvP7669SuXZvj\nx4+zefNmSpQoQcmSJSlRogQlSpTA29tb+1TyAL0JTtldvXqV2bNns2/fPr788ktcXFxo06YNmzZt\nYsKECbzzzjts2bKF//znP/j5+TF06FAAwsPDKVu2rJ5tOJioqChOnjzJ5cuXuXz5MpcuXeLy5ct0\n794db29v/vzzTyZPnszly5e5cuWKfbsff/yRli1bMm/ePJ566qk09W7YsIF27drxww8/8NJLL1Gi\nRAmKFy9uf//000+pX78+u3bt4scff8Td3Z3ixYvb3x944AHKlCnD1atXuXjxIu7u7ri7u1O0aFH9\nP4reBHdLu3fv5uuvv2batGnaSXeTEiVK8Morr9xQNm/ePA4ePGjvJD179iy///47x44dY+jQocTH\nx1OxYkVcXFz4888/adiwIYsXL+bEiRO0bt2aFi1akJCQAKCXGgoYNze3dO8PSXG7YcAAPXr0IDg4\nmCtXrnD16lWuXLnCtWvX7BMt+vj48OSTT9rLr127xsWLF+1nvvv27ePDDz8kKSnphnr//PNPWrRo\nwbJly3jmmWfs5U5OTri7u7N27VqaNm3KypUrmThxIu7u7ri5udlfw4YNo3LlygQFBREQEICbmxvF\nihWjWLFiuLm50bhxY0qUKEFkZCRRUVH2dQXtfiOH+23dunUrM2bM4MqVK8yfP18TRAa8vLzsM6AC\n9OrVi169etlH0CQkJDBlyhSOHTuGt7c3AD/++COLFi1i5MiRtGjRgoCAADp37ky1atU4dOgQAGPH\njqVw4cL06dOHatWqceHCBeLj4ylXrpwmEQdRrFgxqlatesv1TZo0oUmTJrdcP3DgQAYMGEBMTAzX\nrl0jMjKSa9euUb16dQBatmzJ//3f/xEZGWlfFxUVZX8krTEGZ2dnIiIiOHXqFFFRUURFRdnvft+0\naRODBw9Oc9y///4bf39/5s+fz0svvWQvL1KkCMWKFWPjxo34+vry448/8sknn+Dq6kqxYsVwdXXF\n1dWVcePGUblyZQIDA1m1apW9POXVuXNnSpcuzblz5zh58iQuLi64urri4uKCi4tLrvXpONxv4b/+\n9S9iYmJ44403cHJy4r///a9+GWVByl9Jrq6uDBky5IZ1Cxcu5Pvvv7cnEG9vb0aMGHHDkMyZM2dy\n6tQp+3DbSZMm8dFHH/Hoo4+yfPlywsLC6N+/P+XKleO7776jRIkSrF69mqioKPz8/KhcuTLXr18H\n0GdhODBjjP0v9woVKtywrlq1alSrVu2W+z788MM8/PDDt1z/7LPP0qNHD6Kjo4mKirK/pwwLb9Wq\nFVOnTiU6OvqGbVKmvClatCilSpUiJiaGsLAwYmJiiImJITY2FkieaHP06NFpjrt7925Kly7N0qVL\n0/xuAezatQtfX9+Mfzh3yWH7HD777DOGDRtG//79mTNnToE7JcwPYmJicHJyokiRIuzYsYPt27fj\n5eVFt27dOHbsGAMGDOD8+fMcOHCAIkWK0KJFC7Zu3crkyZN57bXXmDt3LgMHDqRRo0bs3LkTSP6F\nd3V15cMPP6RmzZps2LCBw4cP06BBA1q2bElMTAz//PMPpUqVwtPTU69BK0slJibaE0ZK8qhUqRJF\nixbl1KlTHDhw4IZ1sbGx9O3b964Gh2S2zwERyZcvPz8/uVsfffSRADJgwABJSEi46/pUzjp37pzs\n3r1bzp49KyIie/bskQ8++ECmTJkiIiIJCQnSsmVLqVOnjuzfv19ERJ577jkBZNCgQSIi8vfffwsg\ngP3fvG3btuLl5SULFiwQEZE1a9ZIz549ZfTo0SIikpSUJB999JF89dVXcv78eRER2b9/v2zatElO\nnDghIiJxcXFy6dIliYuLy50fhlJZBARKJr5jLf+Sz+orO5KDiMj48eMFkGeeeUYSExOzpU6Vd8TG\nxsrZs2ftX+oXLlyQxYsXy8yZM+3bTJgwQZ599lnZtGmTiIjMnz9f6tSpI0888YSIiERHR9sTSkrS\nGTBggAAyZMgQERH5448/BBBnZ2d7vR06dJBq1arJsmXLRERk2bJl8sgjj8g777wjIiLx8fHy+uuv\nyzvvvCPnzp0TEZH169fLjBkz5O+//xYRkUuXLsmGDRtk69at9npDQkLkzJkzEhMTIyLJyUupzNLk\ncAfGjBkjgDz33HMSEhKiv2zqBklJSRITEyPnz5+3nxkcOnRI1q1bJwcOHBCR5C/sSZMmySeffGLf\nb+TIkdK3b1/ZvHmziIjMmzdPGjduLE8//bSIiFy9elXc3d2lcOHCcvjwYRER6du3rwDyxhtviIjI\nxo0bBRA3Nzd7vTVq1BBA/vvf/4qIyGeffSZOTk7y4IMPiohIZGSk+Pj4SM2aNeWff/4REZGxY8dK\n+/bt5dtvvxURkQMHDsiTTz4p//rXv+z1fvzxx/LOO+/Inj17REQkMDBQJk+ebE9ucXFxMn/+fFmy\nZIlcvXpVRJLPoAICAuTYsWMiInLt2jXZv3+/HD161F5veHi4XLhwQa5fvy4iIomJifo7ZiFNDncg\nKSlJRo0aZf/rsGLFitKtWzcZO3asrFy5UsLCwvQ/s8pRKf+/Ll68KCdOnJDw8HARST5z2Lhxo6xb\nt86+7Q8//CDffvutHDlyRERENm/eLCNHjrR/8UdGRsqAAQOkd+/e9ktwY8aMkVatWslXX30lIsln\nOlWqVJE6derY661Tp444OTnJwoULRURk4sSJAkj79u3tsaT8jqR8+ffq1UsAGTZsmIiI/PbbbwJI\niRIl7PVWqVJFAHu9H3/8sQDSoUMHERG5fPmylCpVSsqWLWtPMkOGDJFq1arZk+22bdvE39/fvo+I\nyMCBA6VTp07y+++/i4jI8uXLpXfv3vLBBx+IiEhUVJQ8//zz8tJLL0lYWJiIiMyePVveeustWbly\npYiI/PPPPzJ27Fj57LPP7PXOmDFDJk+ebP/57t69W6ZPny6rV68WEZHr16/LggULZPHixXLt2jUR\nEdmxY4esXLlSDh06ZP933Lhxo/z555/2evfs2SOBgYFy8eJFEUlOmkFBQXLq1CkRSb4seuLECTl1\n6pTEx8fbfzbh4eESFRUlIslnmylnjFmlySELAgMD5csvv5SBAwdK7dq1xRhj/2VwcXGR++67T/z8\n/KRz584yYMAAeeONN2TcuHHy2WefybRp02TOnDmyZMkSWb16tQQEBMhff/0lO3bskH379snhw4fl\n+PHjEhoaKmFhYXLhwgW5fPmyREZGSkxMjMTHx+tlLZWnxMbGSkREhP3LLCEhQQ4ePCh79+6V2NhY\nEUk+A1m/fr39i/TcuXOyaNEiWbx4sb2euXPnypQpU+xnR1u2bJHRo0fbL+1FRkbKq6++Kv/+97/t\nSfHLL7+U/v37y/z580VEZOfOnfLwww/bL/WJiDzxxBPSrFkze+L87rvvpFatWvYzs0uXLsm9994r\nFSpUsPcNPfXUU+Lq6irvvvuuiIisXbtWAPHw8LDX6+PjI4C9DR9++OENySwiIsL+vZByZvbEE08I\nIMOHD7+h3lKlSt2y3pQ+z44dO96y3p49e6apt0+fPnfyz5hGZpODw45Wyoxr166xc+dOdu7cSWho\nKOHh4Wle0dHR2X7cQoUK2V9OTk4YYyhUqFC67xm9gDTLt3vP7HJ6n7O7PCvy4uijvBjTncqv3xOZ\nJfK/x/AmJSUhIvbfsaSkJBITEzHG2Ie9pwyjLlKkCMYY4uLiSExMpHDhwjg7O5OYmGjfJuUZK1FR\nUSQlJeHq6krhwoW5fv06169fx8nJCTc3N0SEK1euAMk3pBYqVIjIyEji4+Pt9zrEx8dz/fp1Pv30\nU/r06ZOltuod0tmgePHitGnThjZt2txym4SEBPsY55RXyrjn+Ph44uLibnhdv36dxMREEhIS7O8p\nr6SkJPsrMTHR/p6SyVP+06Zsk1HmB9Is3+49s8vpfc7u8qzIi19geTGmrCoISa6gyI3H0mpyuEuF\nCxe2TximlFIFRZ55qK0xprMx5rAxJtgYM8LqeJRSypHlieRgjHECvgG6AHWAfsaYW8/opZRSKkfl\nieQANAWCReSYiMQBC4FHLY5JKaUcVl5JDp7A6VSfQ2xlSimlLJBXkkOmGGMGGWMCjTGB4eHhVoej\nlFIFVl5JDqGAd6rPXrayG4jIdyLiLyL+KdPiKqWUyn55JTn8DVQ3xlQ2xhQB+gI/WxyTUko5rDxx\nn4OIJBhjhgC/Ak7ATBE5YHFYSinlsPLt9BnGmHDgZBZ3LwtcyMZw8gtHbTc4btu13Y4lM+2uJCIZ\nXpfPt8nhbhhjAjMzt0hB46jtBsdtu7bbsWRnu/NKn4NSSqk8RJODUkqpNBw1OXxndQAWcdR2g+O2\nXdvtWLKt3Q7Z56CUUur2HPXMQSml1G04XHJwlKnBjTEzjTHnjTH7U5WVNsasM8Yctb3n/BNDcpkx\nxtsYs9EYE2SMOWCMec1WXqDbboxxMcZsN8bssbV7rK28QLc7hTHGyRizyxizwva5wLfbGHPCGLPP\nGLPbGBNoK8u2djtUcnCwqcFnAZ1vKhsBrBeR6sB62+eCJgF4U0TqAM2BwbZ/44Le9utAexFpCPgC\nnY0xzSn47U7xGnAw1WdHaXc7EfFNNXw129rtUMkBB5oaXEQ2ARdvKn4UmG1bng08lqtB5QIROSsi\nO23L10j+wvCkgLfd9uz4SNtHZ9tLKODtBjDGeAGPANNTFRf4dt9CtrXb0ZKDo08NXkFEztqWzwEV\nrAwmpxljfIBGwDYcoO22Syu7gfPAOhFxiHYDk4G3gaRUZY7QbgF+M8bsMMYMspVlW7vzxNxKKveJ\niBhjCuxQNWOMO7AUGCoiV40x9nUFte0ikgj4GmNKAcuMMfVuWl/g2m2M6QqcF5Edxpi26W1TENtt\n00pEQo0x5YF1xphDqVfebbsd7cwhU1ODF2Bhxph7AGzv5y2OJ0cYY5xJTgzzRORHW7FDtB1ARC4D\nG0nucyro7W4JdDfGnCD5MnF7Y8x/KfjtRkRCbe/ngWUkXzbPtnY7WnJw9KnBfwaeti0/DfxkYSw5\nwiSfIswADorIpFSrCnTbjTHlbGcMGGNcgQeBQxTwdovISBHxEhEfkn+fN4jIUxTwdhtj3IwxxVOW\ngYeA/WRjux3uJjhjzMMkX6NMmRp8gsUh5QhjzAKgLcmzNIYBo4HlwGLgPpJntO0tIjd3WudrxphW\nwGZgH/+7Bv0Oyf0OBbbtxpgGJHdAOpH8R99iERlnjClDAW53arbLSm+JSNeC3m5jTBWSzxYguXtg\nvohMyM52O1xyUEoplTFHu6yklFIqEzQ5KKWUSkOTg1JKqTQ0OSillEpDk4NSSqk0NDkoh2WM+dP2\n7mOM6Z/Ndb+T3rGUyi90KKtyeKnHx9/BPoVFJOE26yNFxD074lPKCnrmoByWMSZlFtOJQGvbvPiv\n2yaw+9QY87cxZq8x5iXb9m2NMZuNMT8DQbay5baJzw6kTH5mjJkIuNrqm5f6WCbZp8aY/ba5+Puk\nqjvAGLPEGHPIGDPPdrc3xpiJJvn5FHuNMZ/l5s9IOS6deE+p5Dnv7WcOti/5KyLSxBhTFPjDGLPW\ntm1joJ6IHLd9fk5ELtqmrPjbGLNUREYYY4aIiG86x3qc5OctNCT57vW/jTGbbOsaAXWBM8AfQEtj\nzEGgB1DLNpFaqWxvvVLp0DMHpdJ6CBhom/56G1AGqG5btz1VYgB41RizB9hK8qSO1bm9VsACEUkU\nkTDgd6BJqrpDRCQJ2A34AFeAWGCGMeZxIPquW6dUJmhyUCotA7xie8KWr4hUFpGUM4co+0bJfRUd\ngRa2J7DtAlzu4rjXUy0nAin9Gk2BJUBXYM1d1K9UpmlyUAquAcVTff4V+Ldt6m+MMTVsM1/erCRw\nSUSijTG1SH4saYr4lP1vshnoY+vXKAc8AGy/VWC251KUFJFVwOskX45SKsdpn4NSsBdItF0emgVM\nIfmSzk5bp3A46T9ucQ3wL1u/wGGSLy2l+A7Ya4zZKSJPpipfBrQA9pD8JK+3ReScLbmkpzjwkzHG\nheQzmjey1kSl7owOZVVKKZWGXlZSSimVhiYHpZRSaWhyUEoplYYmB6WUUmloclBKKZWGJgellFJp\naHJQSimVhiYHpZRSafw/eWoEgzCUxNwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1c68c21450>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "xx=np.arange(iterations)\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(xx, sirt_l2err, 'k--', label='sirt l2 err')\n",
    "ax.plot(xx, ossarterr, 'k:', label='ossart l2 err')\n",
    "ax.plot(xx, sarterr, 'k', label='sart l2 err')\n",
    "plt.xlabel('iterations')\n",
    "legend = ax.legend(loc='upper center')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
